package collection;

import java.util.*;

/**
 * java.util.List接口
 * List继承自Collection.特点:可以存放重复元素,并且有序.提供了要通过
 * 下标操作元素的方法.
 * <p>
 * List下有两个常用的实现类:
 * java.util.ArrayList:内部由数组实现,查询性能好.
 * java.util.LinkedList:内部由链表实现,增删性能好.尤其首尾增删性能最佳,但是查询性能差
 */
public class ListDemo {
    public static void main(String[] args) {
//        List<String> list = new ArrayList<>();
        List<String> list = new LinkedList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);
        /*
            E get(int index)
            返回给定下标位置处对应的元素
         */
        //获取第三个元素
        String str = list.get(2);//arr[2]
        System.out.println(str);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        /*
            E set(int index,E  e)
            将给定元素设置到指定位置,返回值为该位置原有元素.
            替换元素操作
         */
        String old = list.set(2, "six");
        System.out.println(list);
        System.out.println("old:" + old);

//        int len = list.size() / 2;
//        for (int i = 0; i < len; i++) {
//            list.set(i, list.set(list.size() - 1 - i, list.get(i)));
//        }
//        for (int i = 0; i < list.size()/2; i++) {
//            //获取整数位置上的字符
//            String s = list.get(i);
//            //将整数位置上的字符方法放到对应的倒数位置上
//            s = list.set(list.size()-1-i,s);//返回值为倒数位置上的字符
//            //将倒数位置上的字符放到正数位置上完成交换
//            list.set(i,s);
//        }

        for (int i = 0; i < list.size() / 2; i++) {
            old = list.set(i, list.get(list.size() - i - 1));
            list.set((list.size() - i - 1), old);
        }
        Collections.reverse(list);
        System.out.println(list);


    }
}
